前二天主要是在介紹 Docker 的一些基本概念,今天要介紹如何把 Docker 安裝並且執行起來。
安裝 Docker 使用的作業系統是 CentOS 7.3, Kernel 使用預設的 3.10.0-514
這裡要注意的一點是 Docker 會呼叫到 Linux Kernel 的 Namespace 和 Cgroup 所以需要選擇正確版本的 Linux Kerenel,不然 Docker 的 service 會啟動不起來。像是之前我就用 CentOS 6.1 的作業系統,預設 Kerenel 版本是 2.6.32-131,安裝 Docker結果Docker 的 service一直都沒辦法啟動,後來換了 CentOS 7 才成功的把 Docker service執行起來。
$ lsb_release -a
如果找不到 lsb_release 指令,就需要使用以下指令安裝套件
# yum install -y redhat-lsb-core
$ uname -a
執行結果如下圖:
方法一: 直接使用CentOS 7 預設的 yum 安裝
# yum install -y docker
# systemctl start docker
安裝完 docker 之後使用 docker version
,確認安裝的版本
方法二: 如果要使用較新版本的Docker,就需要從網路上找 Docker rpm 安裝檔,來安裝
# yum install https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-17.05.0.ce-1.el7.centos.x86_64.rpm
可以到以下網站去選擇符合自已需求的 docker 版本:
https://yum.dockerproject.org/repo/main/centos/7/Packages/
# systemctl start docker
docker version
查看版本,是否正確畫面如下# rpm -qa|grep docker
如下圖
# yum remove docker-client
# yum remove docker-common
# cd /etc
# rm –rf docker
# cd /var/lib
# rm –rf docker
啟動 docker service 的指令上面已經有介紹到了,如下
# systemctl start docker
如果下次重新開機,需要能自動啟動 docker service,使用以下指令設定
# systemctl enable docker
在使用 root 使用者權限時可以順利的執行 docker images
指令,但是換到一般的使用者執行 docker images
指令時就會收到錯誤訊息,如下圖:
這個問題主要是在執行 docker service 時,會有一個檔案 /var/run/docker.sock,它的權限不能給一般使用者執行,如下圖:
要解決這個問題,主要有二個方法:
方法一: 使用偷吃步的方式,直接把 /var/run/docker.sock 檔案的權限開到最大,如下指令:
# chmod 777 /var/run/docker.sock
但是使用這種方式會有一種缺點,就是下一次重新啟動 docker service 時,這個檔案的權限要會被改回之前的狀態,所以還是會沒有把問題撤底解決。
方法二: 做以下幾個步驟的設定
Vi /etc/docker/daemon.json
檔案內容如下:
{
"live-restore": true,
"group": "dockerroot"
}
JSON的逗號要記得加不然重新啟動 Docker Service 會啟動不起來
# usermod -aG dockerroot user1
# systemctl restart docker
docker images
指令,確認是否解決了問題之後我所介紹使用的 docker 版本如果沒有特別說明,都是使用 1.12.6。今天已經把docker 安裝完成了,明天就可以開始把 docker image pull 下來使用。
https://coderleaf.wordpress.com/2017/02/10/run-docker-as-user-on-centos7/
加了 /etc/docker/daemon.json 之後,也重新啟動 docker service,如果還是發生了
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
那就整台 host 重新開機看看,應該可以解決這個問題。